﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using DTO;
using BUS;
using System.Data;
using MD5Hash;

namespace DuanGiuaKy
{
    public partial class frm_adm_qlTaiKhoan : Form
    {
        //
        private int formtype = 1; // 1. them moi; 2. chinh sua
        //
        private string MaTK;
        // 
        private DataTable thongTinTaiKhoan;
        public frm_adm_qlTaiKhoan()
        {
            InitializeComponent();
        }
        public frm_adm_qlTaiKhoan(string matk)
        {
            InitializeComponent();
            formtype = 2;
            //
            MaTK = matk;
            //
            thongTinTaiKhoan = TaiKhoan_BUS.layThongTinTK(matk);
        }
        private void loadDuLieuChoTextBox()
        {
            try
            {
                txtUserId.Text = thongTinTaiKhoan.Rows[0]["userID"].ToString();
                txtUsername.Text = thongTinTaiKhoan.Rows[0]["username"].ToString();
                txtEmail.Text = thongTinTaiKhoan.Rows[0]["email"].ToString();
            }
            catch
            {
                MessageBox.Show("Không lấy được thông tin tài khoản bạn chọn, vui lòng chọn lại!", "Lỗi", MessageBoxButtons.OK, MessageBoxIcon.Error);
                this.Close();
            }
        }
        private void frm_adm_qlTaiKhoan_Load(object sender, EventArgs e)
        {
            switch (formtype)
            {
                case 1: // form them moi
                    btnSubmit.Text = "Thêm mới";
                    this.Text = "Thêm mới tài khoản";

                    break;
                case 2: // form chinh sua
                    btnSubmit.Text = "Chỉnh sửa";
                    this.Text = "Sửa thông tin tài khoản";
                    txtUserId.Enabled = false;
                    txtUsername.Enabled = false;
                    lblPass.Text = "Mật khẩu mới";
                    lblRePass.Text = "Nhập lại mật khẩu mới";
                    //
                    loadDuLieuChoTextBox();
                    break;
            }
        }
        private int errorLog()
        {
            int error = 0;
            // start checking
            if (txtUserId.Text.Length == 0)
                error++;
            if (txtUsername.Text.Length == 0)
                error++;
            if (txtPassword.Text.Length == 0 && formtype == 1)
                error++;
            if (txtRetypePass.Text.Length == 0 && formtype == 1)
                error++;
            if (txtEmail.Text.Length == 0)
                error++;
            return error;
        }
        private void btnSubmit_Click(object sender, EventArgs e)
        {
            if(formtype == 1)
            {
                if (errorLog() == 0)
                {
                    TaiKhoan_DTO tk = new TaiKhoan_DTO(txtUserId.Text, txtUsername.Text, MD5Hash.Encryptor.MD5Hash(txtPassword.Text), txtEmail.Text);
                    TaiKhoan_BUS.themTaiKhoan(tk);
                    this.Close();
                }
                else
                    MessageBox.Show("Điền đầy đủ thông tin để tiếp tục", "Cảnh báo", MessageBoxButtons.OK, MessageBoxIcon.Warning);
            } else if (formtype == 2)
            {
                if (errorLog() == 0)
                {
                    TaiKhoan_DTO tk = new TaiKhoan_DTO(txtUserId.Text, txtUsername.Text, MD5Hash.Encryptor.MD5Hash(txtPassword.Text), txtEmail.Text);
                    TaiKhoan_BUS.suaThongTinTK(tk);
                    if(txtPassword.Text.Length != 0 && txtRetypePass.Text.Length != 0 && txtRetypePass.Text == txtPassword.Text)
                    {
                        TaiKhoan_BUS.doiMatKhauTK(txtUserId.Text, MD5Hash.Encryptor.MD5Hash(txtPassword.Text));
                    }
                    this.Close();
                }
                else
                    MessageBox.Show("Điền đầy đủ thông tin để tiếp tục", "Cảnh báo", MessageBoxButtons.OK, MessageBoxIcon.Warning);
            }
        }

        private void txtUserId_Leave(object sender, EventArgs e)
        {
            if (txtUserId.Text.Length == 0)
            {
                MessageBox.Show("Nhập mã tài khoản để tiếp tục!", "Cảnh báo", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                txtUserId.Focus();
            }
            else if (txtUserId.Text.Length > 10)
            {
                MessageBox.Show("Mã tài khoản không thể dài hơn 10 ký tự!", "Cảnh báo", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                txtUserId.Focus();
            }
            else if (TaiKhoan_BUS.kiemTraMaTaiKhoan(txtUserId.Text))
            {
                MessageBox.Show("Mã tài khoản đã được sử dụng!", "Cảnh báo", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                txtUserId.Focus();
            }
        }

        private void txtUsername_Leave(object sender, EventArgs e)
        {
            if (txtUsername.Text.Length == 0)
            {
                MessageBox.Show("Nhập tên tài khoản để tiếp tục!", "Cảnh báo", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                txtUsername.Focus();
            }
            else if (txtUsername.Text.Length > 10)
            {
                MessageBox.Show("Tên tài khoản không thể dài hơn 15 ký tự!", "Cảnh báo", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                txtUsername.Focus();
            }
            else if (TaiKhoan_BUS.kiemTraTenTaiKhoan(txtUsername.Text))
            {
                MessageBox.Show("Tên tài khoản đã được sử dụng!", "Cảnh báo", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                txtUsername.Focus();
            }
        }

        private void txtPassword_Leave(object sender, EventArgs e)
        {
            if (txtPassword.Text.Length == 0 && formtype == 1)
            {
                MessageBox.Show("Nhập mật khẩu để tiếp tục!", "Cảnh báo", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                txtPassword.Focus();
            }
            else if (txtPassword.Text.Length < 6 && formtype == 1)
            {
                MessageBox.Show("Mật khẩu không thể ít hơn 6 ký tự!", "Cảnh báo", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                txtPassword.Focus();
            }
        }

        private void txtRetypePass_Leave(object sender, EventArgs e)
        {
            if (txtRetypePass.Text.Length == 0 && formtype == 1)
            {
                MessageBox.Show("Nhập lại mật khẩu để tiếp tục!", "Cảnh báo", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                txtRetypePass.Focus();
            }
            else if (txtRetypePass.Text != txtPassword.Text)
            {
                MessageBox.Show("Mật khẩu không trùng khớp!", "Cảnh báo", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                txtRetypePass.Focus();
            }
        }

        private void txtEmail_Leave(object sender, EventArgs e)
        {
            if (txtEmail.Text.Length == 0)
            {
                MessageBox.Show("Nhập email để tiếp tục!", "Cảnh báo", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                txtEmail.Focus();
            }
        }

        private void btnHuy_Click(object sender, EventArgs e)
        {
            DialogResult result = MessageBox.Show("Bạn có chắc hủy thao tác?", "Cảnh báo", MessageBoxButtons.OKCancel, MessageBoxIcon.Warning);
            if (result == DialogResult.OK)
                this.Close();
        }
    }
}
